package com.gitee.loyo;

import com.gitee.loyo.data.Token;
import com.gitee.loyo.post.*;
import com.gitee.loyo.result.*;

/**
 * 推送服务
 */
public interface NotificationService {

    /**
     * T/CEC 102.4-2016
     * 附录A 分布式认证
     * 接口名称：query_token
     * @param post
     * @return
     */
    Result<Token> queryToken(Request<QueryTokenPost> post);

    /**
     * T/CEC 102.2-2016
     * 6.3 设备状态变化推送
     * 接口名称：notification_stationStatus
     * @param post
     * @return
     */
    Result<NotifyStationStatusResult> notifyStationStatus(Request<NotifyStationStatusPost> post);

    /**
     * T/CEC 102.3-2016
     * 6.5 推送启动充电结果
     * 接口名称：notification_start_charge_result
     * @param post
     * @return
     */
    Result<NotifyStartChargeResultResult> notifyStartChargeResult(Request<NotifyStartChargeResultPost> post);

    /**
     * T/CEC 102.3-2016
     * 6.7 推送充电状态
     * 接口名称：notification_equip_charge_status
     * @param post
     * @return
     */
    Result<NotifyEquipChargeStatusResult> notifyEquipChargeStatus(Request<NotifyEquipChargeStatusPost> post);

    /**
     * T/CEC 102.3-2016
     * 6.9 推送停止充电结果
     * 接口名称：notification_stop_charge_result
     * @param post
     * @return
     */
    Result<NotifyStopChargeResultResult> notifyStopChargeResult(Request<NotifyStopChargeResultPost> post);

    /**
     * T/CEC 102.3-2016
     * 6.10 推送充电订单
     * 接口名称：notification_charge_order_info
     * @param post
     * @return
     */
    Result<NotifyChargeOrderInfoResult> notifyChargeOrderInfo(Request<NotifyChargeOrderInfoPost> post);

    /**
     * T/CEC 102.3-2016
     * 6.11 推送订单对账结果信息
     * 接口名称：check_charge_order
     * @param post
     * @return
     */
    Result<CheckChargeOrderResult> checkChargeOrder(Request<CheckChargeOrderPost> post);
}
